home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 12511500 / var1411.dms / var1411.adf / docs / Demo.doc < prev    next >
Text File  |  1993-07-23  |  3KB  |  71 lines

  1.  
  2.  
  3. The demo is just a three dimensional starfield with a sinusoidal scrolltext
  4. which I wrote a while ago. It demonstrates just how naughty you can be when
  5. writing programs, to squeeze the most speed out of the computer. Hopefully it
  6. will work on all Amigas, but I wouldn't bet on it, as it hits the hardware
  7. directly, and does other such naughty things.
  8.  
  9.   The demo works as two separate tasks:
  10. 1) starfield
  11. 2) scrolling message
  12.  
  13.  The scrolling message is the most important thing, and is handled via an
  14. interrupt. The best way to look at how the message is produced is to consider
  15. two screen refreshes
  16.  
  17. After the television scan line has passed the bottom of the message boundary,
  18. a routine in the copper list programs the blitter to clear the bit plane used
  19. for the message. Then a few scan lines later, well after the blitter has
  20. completed, the copper list then causes a copper interrupt. This interrupt
  21. routine draws the scrolling message on the screen, and finishes it before the
  22. television scan line meets the top line of the scrolling message.
  23. The scrolling message routine then does nothing until after the television
  24. scan line has passed the bottom of the message, in which case, the message
  25. routine repeats.
  26.  
  27.  To get the sinusoidal movement, the message is split into vertical lines,
  28. with each line being one vertical pixel of a character. These lines are
  29. moved from the left of the screen to the right. To make the effect more
  30. interesting, the displacement of the lines is provided by a sine wave of
  31. various frequency and amplitude moving from right to left
  32.  
  33.  The message is more efficiently produced by drawing every other pixel of the
  34. message, and then using the blitter to copy the whole message one pixel to
  35. the right (almost halves the time take to display the message)
  36.  
  37.  
  38. The stars are moved when the processor is not drawing the message, and when
  39. the blitter is clearing the message (the star drawing routine doesn't use the
  40. blitter, so this is allowable). The stars are moved as quickly as possible,
  41. and so each star doesn't necessarily move once per frame. The number of stars
  42. in the demo can be altered by changing the value of NumberStars in the source
  43. code.
  44.  
  45. Each movement of the stars allows the star to be moved in one plane, and also
  46. to be roatated in one plane.
  47.  
  48.  
  49.   Please note that when you are doing very naughty things such as programming
  50. the blitter with a copper list, then you have to be exteremly careful when
  51. shutting down the demo, and returning to the workbench screen, as it is very
  52. easy to crash the machine. For example, see the shut down code in this demo.
  53.  
  54.  
  55.   There is no music in this demo for two reasons:
  56.  
  57. 1) I cannot write music
  58. 2) Adding a protracker replay routine would only make the source file longer
  59.    and cloud matters further. Although adding one would be simple. Just add
  60.    the music source, and in the interrupt handler before the line:
  61.  
  62.     bsr.s    DoScroll
  63.  
  64.    add:
  65.     bsr    mt_music
  66.  
  67.    Or whatever the routine is that needs to be called every vertical blank.
  68.    also add branch subroutines to the mt_init & mt_end routines in the
  69.    startup and shutdown code.
  70.  
  71.